
// var times=0;
// var svar= setInterval(a,1*1000);



//单词默写系统

//node.js

var wnodejs=['nodjs',
'交互全局对象',
  '全局对象'  ,
  '进程对象 ',
 '查看当前的进程编号 ',
  '结束某个编号的进程  ',
  '缓冲区 ',
  '创建缓冲区 ',
  '一次性定时器 ',
  '清除 ',
  '周期性定时器 ',
  '立即执行定时器 ',
  '主程序后执行器（立即执行）',
  '引入模块' ,
  '当前模块导出对象 ',
  '当前模块的绝对路径和文件名 ',
  '字符串模块 ',
   '将字符串转换为对象 ',
   '将对象转换字符串' ,
  '将url转换对象', 
  '对象转url  ',
  '模拟发送请求',  
  '创建服务器' ,
  '设置端口 ',
  '监听服务器访问', 
  '写 ',
  '写头信息 ',
  '结束并发送', 
  '方法    ',
  '头信息 ',
  '模块 ',
   '同步 ',
  '创建文件夹 ',
  '删除文件夹 ',
  '读取文佳家中的文件名 ',
  '检测文件是否存在' ,
  '清空写入 ',
  '追加写入 ',
  '读取文件 ',
  '删除文件 ',
  '创建可读流 ',
  '创建写入流' ,
  '管道 ',
  '设置流编码', 
  '监听数据 ',
  '监听结束' ,
  '获取 ',
  '创建web服务器 ',
  '设置网页访问类型', 
  '设置解压缩'  ,
  '压缩 ',
  '创建压缩 ',
  '创建连接对象', 
  '建立连接' ,
  '查询  ',
  '关闭连接', 
  '地址 ',
  '用户 ',
  '密码 ',
  '数据',
  '创建服务器' ,
  '监听端口' ,
  '重定向' ,
  '发送 ',
  '编码 ',
  'body框架',  
  '中间件' 
];
var wnodejsen=[null,
'global',
'window',
'process',
'process.pid',
'process.kill',
'Buffer',
'Buffer.alloc',
'setTimeout',
'clear',
'setInterval',
'setImmediate',
'process.nextTick',
'require',
'module.exports',
'filename',
'querystring',
'parse',
'stringify',
'parse',
'fromat',
'get',
'createServer',
'listen',
'on request',
'write',
'writeHead',
'end',
'method',
'headers',
'require',
'sync',
'mkdir',
'rmdir',
'readdir',
'existisSync',
'writeFile',
'appendFile',
'readFile',
'unlink',
'createReadStream',
'createWriteStream',
'pipe',
'setEncoding',
'onendfunction',
'get',
'createServer',
'Content-Type:text/html',
'Content-Encoding:gzip',
'zlib',
'creategzip',
'createConnection',
'connect',
'query',
'end',
'host',
'user',
'password',
'database' ,
'express',
'listen',
'redirect',
'send',
'urlencoded',
'body-parser',
'use'
]

//arrayapi
var arrayapi=['数组api','数组','长度','遍历数组 ',
  '将数组中的元素按照逗号组合为字符串  ',
  '将数组中的元素按照指定的字符组合为字符串，默认是按逗号',
 '拼接多个数组元素' ,
  '截取数组中的元素',
  '删除数组中的元素' ,
  '翻转数组中的元素' ,
  '排序数组中的元素' ,
  '往数组的末尾添加元素'  ,
   '删除数组的末尾的那个元素','在数组开头添加元素返回数组的长度' ,'删除开头的一个元素']

var arrayapien=[null,
  'Array',
  'length',
   'forin',
  'toString',
  'join',
 'concat',
 'slice',
  'splice',
  'reverse',
  'sort',
  'push',
   'pop','unshift','shift'];

//string api
var stringapi=['字符串api',
  '长度',
  '获取下标对应的字符 ',
  '查找某个字符对应的Unicode码 ',
  '查找字符串的下标，如果找不到返回-1',
  '查找字符串最后一次出现的下标，如果找不到返回-1 ',
  '转大写 ',
  '转小写 ',
  '截取字符串sli ',
  '截取字符串sub ',
  '截取字符串str ',
  '匹配 ',
  '全局查找',
  '替换','字符串切割为数组']

  var stringapien=[null,
'length',
'charAt',
'charCodeAt',
'indexOf',
'lastIndexOf',
'toUpperCase',
'toLowerCase',
'slice',
'substr',
'substring',
'match',
'search',
'replace','split'
  ]

  //日期api
  var dataapi=["日期api",
  '获取年',
'获取月 ',
'获取日 ',
'获取时' ,
'获取分 ',
'获取秒 ',
'获取毫秒' ,
'获取当地日期字符串 '
  ]
  var dataapien=[
null,
'getFullYear',
'getMonth',
'getDate',
'getHours',
'getMinutes',
'getSeconds',
'getMilliseconds',
'toLocaleString'
  ]


  //数学api
  var Mathapi=[
    "数学api",
 '圆周率' ,
 '绝对值 ',
'向下取整 ',
'向0取整 ',
'向上取整 ',
'四舍五入 ',
'最大值  ',
'最小值 ',
'随机数'  
  ];
  var Mathapien=[
    null,
    'PI',
 'abs',
 'floor',
 'parseInt',
 'ceil',
 'round',
 'max' ,
 'min',
'random',
  ];

//sql与基础js
var chanise=['sql与基础js','数据库' ,
    '数据表 '  ,
    '微整形'  ,
    '小整形 '  , 
  '布尔型    ',
   '长字符  '  , 
   '丢弃  '  ,
    '进入  ' ,
    '插入'    , 
    '描述'    ,
    '创建 '    ,
    '删除'   ,
    '如果 '   ,
    '存在  ' ,
    '地点 '   ,
    '设置 '    ,
   '日期 '   ,
    '真'      ,
    '假'      ,
    '值'       ,
    '升序'    ,
    '修改'     ,
    '定点小数'  , 
    '唯一约束 '  ,
    '主键约束  ' ,
    '查找表上的所有东西',    
    '不同的 '   ,
    '外键约束'  ,
    '默认值   '  , 
    '自增列    ' ,
    '以...排序  ' ,
    '以...为参考 ' ,
    '把...分组    ' ,
    '常量    ',
    '控制台   ',   
    '检测数据类型',  
    '未定义   ',
    '数字      ',
    '将字符串和小数转整型',  
    '将字符串转浮点型    ',
    '查看任意一个字符的Unicode码',
    '限制',
    '计算', 
    '总和',
    '平均值',
    '左',
    '右',
    '连接',
    '关闭',
    '字符串型', 
    '脚本',
    '警示',
    '提示',
    '输入','非数','开关']
var enclise=[null,'database',
    'table',
    'tinyint',
    'smallint',
    'bool',
    'varchar',
    'drop',
    'use',
    'insert into',
    'desc',
    'create',
    'delete',
    'if',
    'exists',
    'where',
        'set',
       'date',
      'true',
      'false',
      'values',
       'asc',
      'update',
    'decimal',
     'unique',
     'primarykey',
     'select*from',
    'distinct',
     'forerign key',
      'default',
         'auto_increment',
'orderby',
'references',
'groupby',
'const',
'console.log',
'typeof',
'undefined',
'Number',
'parseInt',
'parseFloat',
'charCodeAt',
'limit',
 'count',
'sum',
'avg',
'left',
'right',
'join',
'close',
'string',
'script',
'alert',
 'prompt  ',
 'input','NaN','switch']



//nodejs


var wjmk=['文件模块',
  '引入模块',
  '同步',
 '创建目录',
 '删除目录', 
 '读取文佳家中的文件名',
 '同步检测是否存在',
 '清空写入',
 '追加写入',
 '读取文件',
 '删除文件',
 '创建可读流',
 '创建写入流' ,
 '管道 ',
 '设置流编码', 
 '监听数据',
 '监听结束'
,'目录','文件','目录全写']
var wjmken=[null,
   'require',
'sync',
'mkdir',
 'rmdir',
  'readdir',
  'existsSync',
 'writeFile','appendFile',
  'readFile',
  'unlink',
 'createReadStream',
  'createWriteStream',
 'pipe',
 'setEncoding',
 'ondatafunction','onendfunction','dir','file','directory'];

 //http与express框架
 var hex=['http与express与sql',
   '获取  ',
  '创建web服务器 ',
  '设置网页访问类型',
  '设置解压缩', 
  '压缩',
  '创建压缩' ,
  '创建服务器', 
 ' 监听端口' ,
  '重定向' ,
  '发送',
  '编码' ,
  'body框架',
 ' 监听 ',
  '中间件',
  '创建连接对象' ,
'建立连接' ,
'查询' ,
'关闭连接' ,
'地址' ,
'用户' ,
'密码' ,
'数据','延长字符库','绝对路径','文件路径','传输字符串转对象','参数','路由器','正则替换'
];
var hexen=[
null,
'get',
 'createServer',
'Content-Type:text/html',
 'Content-Encoding:gzip',
  'zlib',
'creategzip',
'express',
'listen',
'redirect',
'send',
'urlencoded',
'body-parser',
'listen',
'use',
'createConnection',
 'connect',
 'query',
'end',
 'host',
 'user',
'password' ,'database' ,'extended','dirname','filename','parse','params','Router','replace'
] 

var htmlbq=['html标签','头标签','页面信息','引用css标签','抬头标签','内容标签',  '类型标签' ,'普通文本','独占一行文字','嵌套文字','下标文本','强调文本st','强调斜体em' 
,
'文本斜体i','删除线标签s','删除线标签del','下划线标签','分割标签','分割线标签','格式化文本标签' ,'表格内填充','表格距离填充','导航群链接','侧栏标签','页脚标签'
,
'下拉框','下拉框子项','跨行',    '跨列',   '对齐'  ,'标题','内联网页','生态'   ,'文章侧栏' ,'文本提示','提交'     ,'行动'   ,'方法' , '下拉栏滚动','下拉栏默认选择',
'焦点标签' ,'环绕栏标签','环绕栏表头标签','范围','电话','失去焦点','得到焦点','描述'  ,     '关键字', '设置ie内核','大于号','小于号','背景颜色','边框' ,'图片失效'
];
var htmlbqen=[null,    'head',  'meta',     'link',   'title',   'body'  , 'input'   ,   'b' ,     'p',       'span'  ,  'sub',    'strong'      ,'em'  
,
'i'      , 's'          ,'del'            ,'u'        ,'br'     ,'hr',      'pre'         ,' cellpadding','cellspacing','nav'    ,'aside' ,'footer'
,
'select','option',  'colspan','rowspan','align' ,'legend','iframe','enctype','aside' ,'placeholder','submnint','action','method','multiple' ,'selected'
,
'label'   ,'fieldset','legend'       ,'range','tel','onblur'  ,'onfocus','description','keywords','Edgitge', 'gt',   'lt','background','border' ,'alt'
]; 
var dom=['dom操纵','文件','元素','内部'];
var domen=[null,'document','Element','inner']

//中文在前英文在后
//1 是数学api 2是字符串api 3是 日期api 默认是sql与js基本
   switch(prompt("请选择要测验的题库 hexmk  wjmk 1是html标签 2是字符串api 3是日期api 4是数组 其他值是sql与js基本")){
  //  case '1':
  //  asssda(Mathapi,Mathapien);
  //  break;
   case '1':
   asssda(htmlbq,htmlbqen);
   break;
   case '2':
   asssda(stringapi,stringapien);
   break;
   case '3':
   asssda(dataapi,dataapien);
   break;
   case '4':
   asssda(arrayapi,arrayapien);
   break;
   case 'hexmk':
   asssda(hex,hexen);
   break;
   case 'wjmk':
   asssda(wjmk,wjmken);
   break;
   default:
   asssda(wnodejs,wnodejsen);
   break;
   }

       function asssda (carrayse,earrays){ 
       alert("开始答题了（答案不区分大小写）");
         //错误数组
   var erry=[];
   var erryen=[];
 var ok=0;//答对
 var no=0;//答错
 var cuotiy="错题有";
 var s= prompt('输入题目个数');
 if( s>carrayse.length){
      
  var geshu = carrayse.length
 }else{
  var geshu=Number(s);

 }
 //题目个数
 //控制重复的数组如果重复就把重复的值放入此数组
 var jilu=new Array(carrayse.length);

 //把出现过得随机数放入数组在下一次出现随机数的时候循环对比如果发现出现过就跳出本次循环进入下次循环
 //循环体
 var i=0;
  //操纵外层循环变量
  var bre=true;
while(i<=geshu){

//生成随机数
var rand=Math.floor(Math.random()*geshu);


//bre是true就跳出循环
  if(bre&&earrays[rand]!==null&&carrayse[rand]!=='isnull') {

  if( rand<=geshu &&prompt(`${carrayse[rand]}  \n  分类:${carrayse[0]}`).toLowerCase()+""===earrays[rand].toLowerCase()){

    alert("答对了");
    ok++;
  }else{
    
    alert("错了");
    cuotiy+="\n"+"  中文: "+carrayse[rand]+"  英文   "+earrays[rand];
    erry.push(carrayse[rand]);
    erryen.push(earrays[rand]);
    no++;
  }
  //把出现过得数组删除并且拿isnull替换
  carrayse.splice(rand,1,'isnull');
  earrays.splice(rand,1,'isnull');
   i++;
    if( i===geshu-2){
      i=geshu;
    }
  }
  
  
}
alert("本次总共答题"+(geshu-1)+"道"+""+`答对${ok}道  答错${no}道`+cuotiy);
if(erry.length!==0){
 prompt('是否进入错题模式');
 asssda(erry,erryen);
}
}



